Commercial database systems allow multiple users to store data and access the stored data simultaneously. Commercial database systems typically use storage devices (stable storage) to persistently store the database data and they use dynamic memory to hold data that is currently being used, or has recently been used. To answer (or “execute”) a specific query that is issued to database system, there are usually several different conventional approaches available. These approaches are commonly termed “execution plans,” which are a series of operations that provide an answer to the specific query.
Each execution plan is built from execution operators that logically implement a relational-algebra concept with a particular algorithm. A traditional query optimizer in a database system estimates the cost of different possible execution plans and typically chooses the one with the lowest estimated cost. There are various costs associated with each possible execution plan for the query that can be taken into account. Generally, one significant cost is the time it takes to read data from stable storage into memory, or to write the data from memory to stable storage. Improving the accuracy of the estimation of this cost improves the overall accuracy of the decisions made by the query optimizer in selecting the execution plan.
In the drawings, like reference numbers generally indicate identical or similar elements. Additionally, generally, the left-most digit(s) of a reference number identifies the drawing in which the reference number first appears.